<?php
namespace fileDeal;
//内部文件处理函数必须开启777权限，仅用于开发使用。

Class FileDeal{

    public function select($path){
        $path = ROOT_PATH . $path;
        global $result;
        $files = scandir($path);
        foreach ($files as $file) {
            if ($file != '.' && $file != '..') {
                if (is_dir($path . '/' . $file)) {
                    $this->select($path . '/' . $file);
                } else {
                    $result[] = basename($file);
                }
            }
        }
        return $result;
    }


    public function read($filename){
        try{
            $filename = ROOT_PATH . $filename;
            $file = fopen($filename,'r');
            $read = fread($file,9999999);
            if($read){
                $res = ['code'=>1,'msg'=>'文件读取成功！','data'=>$read];
            }
            else{
                $res = ['code'=>0,'msg'=>'文件读取失败！'];
            }
            fclose($file);
        }
        catch (\Exception $e){
            $res = ['code'=>0,'msg'=>'文件读取失败！'];
        }
        return $res;
    }

    public function create($fileurl,$filename,$text=''){
        try{
            $fileurl = ROOT_PATH . $fileurl;
            if(!file_exists($fileurl)){
                $oldmask = umask(0);
                mkdir($fileurl,0777,true);
                umask($oldmask);
            }
            $file = fopen($fileurl .'/' .$filename ,'w');
            $res = fwrite($file,$text);
            fclose($file);
            if($res){
                $res = ['code'=>1,'msg'=>'文件写入成功！'];
            }
            else{
                $res = ['code'=>0,'msg'=>'文件写入失败！'];
            }
        }
        catch (\Exception $e){
            $res = ['code'=>0,'msg'=>'文件写入失败！'];
        }
        return $res;
    }

    public function delete($fileurl){
        if(false===strpos($fileurl,ROOT_PATH)){
            $fileurl = ROOT_PATH . $fileurl;
        }
        try{
            if(is_dir($fileurl))
            {
                $file_list= scandir($fileurl);
                foreach ($file_list as $file)
                {
                    if( $file!='.' && $file!='..')
                    {
                        $this->delete($fileurl.'/'.$file);
                    }
                }
                @rmdir($fileurl);
                //这种方法不用判断文件夹是否为空,
                //因为不管开始时文件夹是否为空,到达这里的时候,都是空的
            }
            else
            {
                @unlink($fileurl);
                //这两个地方最好还是要用@屏蔽一下warning错误,看着闹心
            }
        }
        catch(\Exception $e){
            $res = ['code'=>0,'msg'=>'删除失败！'];
            return $res;
        }
        $res = ['code'=>1,'msg'=>'删除成功！'];
        return $res;
    }

    public function rename($oldfileurl,$newfileurl){
        $oldfileurl = ROOT_PATH . $oldfileurl;
        $newfileurl = ROOT_PATH . $newfileurl;
        if(rename($oldfileurl,$newfileurl)){
            $res = ['code'=>1,'msg'=>'命名成功！'];
        }
        else{
            $res = ['code'=>0,'msg'=>'命名失败！'];
        }
        return $res;
    }

}